package com.axonactive.yolo.service.interfaces;

import java.util.List;

import com.axonactive.yolo.domain.User;
import com.axonactive.yolo.exception.UserNotFoundException;


public interface UserService {
	
	public User create(User userProfile);

	public void delete(int id) throws UserNotFoundException;

	public List<User> findAll();

	public User update(User userProfile) throws UserNotFoundException;

	public User findById(int id);

	public User updatePassword(int userID, String newPassword) throws UserNotFoundException;

	public String getPrimaryEmail(int userID);
	
	/**
	 * Find all user email, except primary email
	 * @param userID
	 * @return 
	 */
	public List<String> findAllEmailByUserIdExceptPrimaryEmail(int userID);
	
	/**
	 * Find all actived email by user id, except primary email
	 * @param userId
	 * @return
	 */
	public List<String> findAllActivatedEmailByUserId(int userId);
	
	/**
	 * Find all not actived email, except primary email
	 * @param userId
	 * @return
	 */
	public List<String> findAllNotActivatedEmailByUserId(int userId);

	public String findByPhone(Integer userId);

	boolean setResetPasswordLinkParam(User user, String param);
	
	public boolean updateTimeStamp(int userId, String type) throws UserNotFoundException;
	
}
